/*
 * SoftwareSAR - 1.0
 */
package br.com.cpqd.ssar.processamento;

/**
 * Gerenciador de Execução do ControladorSimuladores FDTD 3D
 * @author Carlos Henrique da Silva Santos, Rafael Buck
 * @version 1.1
 */
public class ControladorSimuladores implements RequisicoesProcessamento {
    /* 
     *Define o local/nome dos arquivos de Entrada do FDTD 
     */

    private String inputDatabaseFileName;
    /*
     * Define o local/nome dos arquivos de Saída do FDTD
     */
    private String outputDatabaseFileName;
    /*
     * Parametro de retorno da execução do FDTD
     */
    private Process process = null;
    private Process process2 = null;

    /**
     * Método Construtor
     */
    public ControladorSimuladores() {
    }

    /**
     * Definir o arquivo de ENTRADA do FDTD
     * @param value String
     */
    public void setInputDatabaseFilename(String value) {
        inputDatabaseFileName = value;
    }

    /**
     * Definir o arquivo de SAIDA do FDTD
     * @param value String
     */
    public void setOutputDatabaseFilename(String value) {
        outputDatabaseFileName = value;
    }

    /**
     * Executar a chamada ao aplicativo do método FDTD 3D
     */
    public void simularFDTD() {
        String programName;
        String curDir = System.getProperty("user.dir");
        String osName = System.getProperty("os.name");

        // Verificar se o Sistema Operacional é Windows
        if (osName.contains("Windows")) {
            programName = new String(curDir + "\\fdtd3d.exe \"" + inputDatabaseFileName + "\"  \"" + outputDatabaseFileName + "\"");
            try {
                // Executa o processo chamado por str em plataformas Windows
                process = Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL " + programName);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public boolean simularFEMProcesso(String caminho) {

        boolean retorno = true;

        String curDir = System.getProperty("user.dir");
        String osName = System.getProperty("os.name");
        if (osName.contains("Windows")) {
            
            String programNumeracao = new String(curDir + "\\inicioFEM.bat");
            System.out.println(programNumeracao);
            try {
                // Executa o primeiro processo inicioFEM.bat
                process2 = Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL " + programNumeracao);
                System.out.println("depois de executar");
                        
            } catch (Exception e) {
                e.printStackTrace();
                retorno = false;
            }
        }
        return retorno;


    }

    /**
     * Finaliza Processo Corrente
     */
    public void finalizarProcesso() {
        // Se houver processo executando tenta destrui-lo 
        if (process != null) {
            try {
                process.destroy();
            } catch (Exception e) {
                e.printStackTrace();
            }

            try {
                process2.destroy();
            } catch (Exception e) {
                e.printStackTrace();
            }


        }
    }

    public boolean verificarArquivosEntradaFEM() {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}
